home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / SamLPDemo.AMOS / SamLPDemo.amosSourceCode
Encoding:
AMOS Source Code  |  1995-11-18  |  2.6 KB  |  105 lines

  1. '
  2. ' SamLongPlay Procedures V1.0
  3. '
  4. ' Written by Christopher Hodges
  5. '
  6.  Extension_8_0A5E 1 : Extension_8_0A6E 1 : Extension_8_0A4C 1
  7. Screen Open 0,320,200,2,0
  8. Curs Off 
  9. Palette 0,$FFF
  10. Dim SDAT(3,8)
  11. Global SDAT()
  12. Print "Bitte Taste dr�cken!"
  13. SAMLP["sound6",1,15000,12748,3,16,32]
  14. SAMLP["sound4",3,7000,-1,3,16,32]
  15. SETSAM["sound4",1,7000,0,16,32]
  16. SETSAM["sound6",0,15000,12748,17,32]
  17. Timer=0
  18. Print "during main-loop!"
  19. Repeat 
  20.   Multi Wait 
  21.   A$="Playing "+ Extension_8_0EB8(Timer/3000,2)+":"+ Extension_8_0EB8((Timer/50) mod 60,2)
  22.   A$=A$+":"+ Extension_8_0EB8((Timer mod 50)*2,2)+" minutes..."
  23.   Home : Print A$
  24.   MANLP[1]
  25.   MANLP[0]
  26. Until(Inkey$<>"") or(Mouse Key>0)
  27. FINSAM[1]
  28. FINSAM[0]
  29. End 
  30. Procedure SAMLP[F$,V,FREQ,LOP,QUIT,BANK,BUF]
  31.   Erase BANK : Reserve As Chip Work BANK,BUF*1048
  32.   Open In V+1,F$
  33.   LS=Lof(V+1) : LB=BUF*512
  34.   B=0 : FL=0 : S=Start(BANK) : L=LS
  35.   Repeat 
  36.     Multi Wait 
  37.     LL=Min(L,LB)
  38.     If L-LL>0 and L-LL<LB/2 Then LL=LB/2
  39.     Sload V+1 To S+B*LB,LL
  40.     If FL
  41.       Sam Swap Extension_8_04F8(V) To S+B*LB,LL
  42.       While Sam Swapped(V)=0
  43.         If((Inkey$<>"") and(QUIT and 1)) or((Mouse Key>0) and(QUIT and 2))
  44.           Sam Stop Extension_8_04F8(V)
  45.           Close V+1
  46.           Erase BANK
  47.           Pop Proc
  48.         End If 
  49.       Wend 
  50.     Else 
  51.       Sam Raw Extension_8_04F8(V),S+B*LB,LL,FREQ
  52.       FL=1
  53.     End If 
  54.     B=1-B
  55.     Add L,-LL
  56.     If L=0 and LOP>-1 Then Pof(V+1)=LOP : L=LS-LOP+1
  57.   Until L=0
  58.   Fill S+B*LB To S+B*LB+LB,0
  59.   Sam Swap Extension_8_04F8(V) To S+B*LB,LB
  60.   While Sam Swapped(V)=0 : Wend 
  61.   Sam Stop Extension_8_04F8(V)
  62.   Close V+1
  63.   Erase BANK
  64. End Proc
  65. Procedure SETSAM[F$,V,FREQ,LOP,BANK,BUF]
  66.   SDAT(V,0)= Extension_8_04F8(V)
  67.   SDAT(V,1)=BANK
  68.   Erase BANK : Reserve As Chip Work BANK,BUF*1048
  69.   Open In V+1,F$
  70.   SDAT(V,2)=Lof(V+1) : SDAT(V,3)=BUF*512
  71.   SDAT(V,4)=SDAT(V,2) : SDAT(V,5)=0 : SDAT(V,6)=0
  72.   SDAT(V,7)=LOP : SDAT(V,8)=FREQ
  73. End Proc
  74. Procedure MANLP[V]
  75.   If Sam Swapped(V)=0 or SDAT(V,4)=0 Then Pop Proc
  76.   S=Start(SDAT(V,1))
  77.   L=SDAT(V,4) : LB=SDAT(V,3)
  78.   LL=Min(L,LB) : VV=SDAT(V,0)
  79.   If L-LL>0 and L-LL<LB/2 Then LL=LB/2
  80.   A=SDAT(V,5)*LB
  81.   Sload V+1 To S+A,LL
  82.   If SDAT(V,6)
  83.     Sam Swap VV To S+A,LL
  84.   Else 
  85.     Sam Raw VV,S+A,LL,SDAT(V,8)
  86.     SDAT(V,6)=1
  87.   End If 
  88.   SDAT(V,5)=1-SDAT(V,5)
  89.   Add L,-LL
  90.   If L=0 and SDAT(V,7)>-1 Then Pof(V+1)=SDAT(V,7) : L=SDAT(V,2)-SDAT(V,7)
  91.   SDAT(V,4)=L
  92. End Proc[SDAT(V,4)]
  93. Procedure FINSAM[V]
  94.   Sam Stop SDAT(V,0)
  95.   Close V+1
  96.   Erase SDAT(V,1)
  97. End Proc
  98. Procedure WAISAM[V]
  99.   S=Start(SDAT(V,1))
  100.   LB=SDAT(V,3)
  101.   A=SDAT(V,5)*LB
  102.   Fill S+A To S+A+LB,0
  103.   Sam Swap SDAT(V,0) To S+A,LB
  104.   While Sam Swapped(V)=0 : Wend 
  105. End Proc